﻿namespace Bio.Structure
{
    /// <summary>
    /// The Element defines the properties of every element on the periodic table.
    /// This class is largely ported from the Element in BioJava.
    /// </summary>
    public class Element
    {
        #region Properties
        /// <summary>
        /// Gets or sets the element type (Metalloid, AlkaliMetal, etc.)
        /// </summary>
        public ElementType ElementType { get; set; }

        /// <summary>
        /// Gets or sets the atomic number of this element
        /// </summary>
        public int AtomicNumber { get; set; }
        
        /// <summary>
        /// Gets or sets the period in the periodic table for this element.
        /// </summary>
        public int Period { get; set; }

        /// <summary>
        /// Gets or sets the hill order for this element.
        /// </summary>
        public int HillOrder { get; set; }

        /// <summary>
        /// Gets or sets the van der Waals radius of this Element.
        /// </summary>
        public float VdwRadius { get; set; }
        
        /// <summary>
        /// Gets or sets the covalent radius for this element.
        /// </summary>
        public float CovalentRadius { get; set; }
        
        /// <summary>
        /// Gets or sets the valence electron count.
        /// </summary>
        public int ValenceElectronCount { get; set; }
        
        /// <summary>
        /// Gets or sets the minimum valence
        /// </summary>
        public int MinimumValence { get; set; }
        
        /// <summary>
        /// Gets or sets the maximum valence
        /// </summary>
        public int MaximumValence { get; set; }
        
        /// <summary>
        /// Gets or sets the common valence
        /// </summary>
        public int CommonValence { get; set; }

        /// <summary>
        /// Gets or sets the maximum covalent valence
        /// </summary>
        public int MaximumCovalentValence { get; set; }
        
        /// <summary>
        /// Gets or sets the atomic mass for this element.
        /// </summary>
        public float AtomicMass { get; set; }
        
        /// <summary>
        /// Gets or sets the number of core electrons
        /// </summary>
        public int CoreElectronCount { get; set; }
        
        /// <summary>
        /// Gets or sets the typical oxidation state
        /// </summary>
        public int OxidationState { get; set; }
        
        /// <summary>
        /// Gets or sets the the Pauling electronegativity for this element.
        /// </summary>
        public float PaulingElectronegativity { get; set; }
        #endregion

        #region Constructors
        /// <summary>
        /// Constructor for the element type.
        /// </summary>
        /// <param name="elementType">Element type</param>
        /// <param name="atomicNumber">Atomic number</param>
        /// <param name="period">Period in periodic table</param>
        /// <param name="hillOrder">Hill order</param>
        /// <param name="vdwRadius">vDw radius</param>
        /// <param name="covalentRadius">Covalent radius</param>
        /// <param name="valenceElectronCount">Valence electron count</param>
        /// <param name="minimumValence">Minimum valence</param>
        /// <param name="maximumValence">Maximum valence</param>
        /// <param name="commonValence">Common valence</param>
        /// <param name="maximumCovalentValence">Maximum covalent valence</param>
        /// <param name="atomicMass">Atomic mass</param>
        /// <param name="coreElectronCount">Core electron count</param>
        /// <param name="oxidationState">Oxidation state</param>
        /// <param name="paulingElectronegativity">Pauling electronegativity</param>
        public Element(ElementType elementType, int atomicNumber, int period, int hillOrder, float vdwRadius,
            float covalentRadius, int valenceElectronCount, int minimumValence, int maximumValence, int commonValence,
            int maximumCovalentValence, float atomicMass, int coreElectronCount, int oxidationState,
            float paulingElectronegativity)
        {
            this.AtomicNumber = atomicNumber;
            this.Period = period;
            this.HillOrder = hillOrder;
            this.VdwRadius = vdwRadius;
            this.CovalentRadius = covalentRadius;
            this.ValenceElectronCount = valenceElectronCount;
            this.MinimumValence = minimumValence;
            this.MaximumValence = maximumValence;
            this.CommonValence = commonValence;
            this.MaximumCovalentValence = maximumCovalentValence;
            this.AtomicMass = atomicMass;
            this.CoreElectronCount = coreElectronCount;
            this.OxidationState = oxidationState;
            this.PaulingElectronegativity = paulingElectronegativity;
            this.ElementType = elementType;
        }
        #endregion

        #region Static fields
        public static readonly Element H = new Element(ElementType.OtherNonmetal, 1, 1, 39, 1.10f, 0.32f, 1, 1, 1, 1, 1, 1.008f, 0, 1, 2.20f);

        public static readonly Element C = new Element(ElementType.OtherNonmetal, 6, 2, 0, 1.55f, 0.77f, 4, 4, 4, 4, 4, 12.011f, 2, -4, 2.55f);

        public static readonly Element N = new Element(ElementType.OtherNonmetal, 7, 2, 57, 1.40f, 0.75f, 5, 2, 5, 3, 4, 14.007f, 2, -3, 3.04f);

        public static readonly Element O = new Element(ElementType.OtherNonmetal, 8, 2, 65, 1.35f, 0.73f, 6, 1, 2, 2, 2, 16.000f, 2, -2, 3.44f);

        public static readonly Element D = new Element(ElementType.OtherNonmetal, 1, 1, 27, 1.10f, 0.32f, 1, 1, 1, 1, 1, 1.008f, 0, 1, 2.20f);

        public static readonly Element T = new Element(ElementType.OtherNonmetal, 1, 1, 90, 1.10f, 0.32f, 1, 1, 1, 1, 1, 1.008f, 0, 1, 2.20f);

        public static readonly Element He = new Element(ElementType.NobleGas, 2, 1, 40, 2.20f, 1.60f, 2, 0, 12, 0, 0, 4.003f, 2, 0, 0.0f);

        public static readonly Element Li = new Element(ElementType.AlkalineMetal, 3, 2, 50, 1.22f, 1.34f, 1, 0, 12, 0, 1, 6.940f, 2, 1, 0.98f);

        public static readonly Element Be = new Element(ElementType.TransitionMetal, 4, 2, 12, 0.63f, 0.90f, 2, 0, 12, 2, 2, 9.012f, 2, 2, 1.57f);

        public static readonly Element B = new Element(ElementType.Metalloid, 5, 2, 10, 1.55f, 0.82f, 3, 3, 5, 3, 4, 10.810f, 2, 3, 2.04f);

        public static readonly Element F = new Element(ElementType.Halogen, 9, 2, 32, 1.30f, 0.72f, 7, 0, 1, 1, 1, 18.998f, 2, -1, 3.98f);

        public static readonly Element Ne = new Element(ElementType.NobleGas, 10, 2, 61, 2.02f, 1.12f, 8, 0, 12, 0, 0, 20.170f, 10, 0, 0.00f);

        public static readonly Element Na = new Element(ElementType.AlkalineMetal, 11, 3, 58, 2.20f, 1.54f, 1, 0, 1, 0, 0, 22.990f, 10, 1, 0.93f);

        public static readonly Element Mg = new Element(ElementType.AlkalineEarthMetal, 12, 3, 54, 1.50f, 1.30f, 2, 0, 2, 0, 2, 24.305f, 10, 2, 1.31f);

        public static readonly Element Al = new Element(ElementType.PostTransitionMetal, 13, 3, 4, 1.50f, 1.18f, 3, 0, 5, 0, 4, 26.982f, 10, 3, 1.61f);

        public static readonly Element Si = new Element(ElementType.Metalloid, 14, 3, 86, 2.20f, 1.11f, 4, 4, 4, 4, 4, 28.086f, 10, 4, 1.90f);

        public static readonly Element P = new Element(ElementType.OtherNonmetal, 15, 3, 67, 1.88f, 1.06f, 5, 3, 5, 3, 5, 30.974f, 10, 5, 2.19f);

        public static readonly Element S = new Element(ElementType.OtherNonmetal, 16, 3, 82, 1.81f, 1.02f, 6, 2, 6, 2, 6, 32.060f, 10, -2, 2.58f);

        public static readonly Element Cl = new Element(ElementType.Halogen, 17, 3, 21, 1.75f, 0.99f, 7, 0, 1, 1, 1, 35.453f, 10, -1, 3.16f);

        public static readonly Element Ar = new Element(ElementType.NobleGas, 18, 4, 6, 2.77f, 1.54f, 8, 0, 12, 0, 0, 39.948f, 18, 0, 0.00f);

        public static readonly Element K = new Element(ElementType.AlkalineMetal, 19, 4, 47, 2.39f, 1.96f, 1, 0, 12, 0, 0, 39.102f, 18, 1, 0.82f);

        public static readonly Element Ca = new Element(ElementType.AlkalineEarthMetal, 20, 4, 17, 1.95f, 1.74f, 2, 0, 2, 0, 0, 40.080f, 18, 2, 1.00f);

        public static readonly Element Sc = new Element(ElementType.TransitionMetal, 21, 4, 84, 1.32f, 1.44f, 3, 0, 12, 3, 0, 44.956f, 18, 3, 1.36f);

        public static readonly Element Ti = new Element(ElementType.TransitionMetal, 22, 4, 96, 1.95f, 1.36f, 4, 2, 4, 3, 4, 47.880f, 18, 4, 1.54f);

        public static readonly Element V = new Element(ElementType.TransitionMetal, 23, 4, 100, 1.06f, 1.25f, 5, 0, 12, 3, 0, 50.040f, 18, 5, 1.63f);

        public static readonly Element Cr = new Element(ElementType.TransitionMetal, 24, 4, 24, 1.13f, 1.27f, 6, 0, 12, 2, 0, 51.996f, 18, 3, 1.66f);

        public static readonly Element Mn = new Element(ElementType.TransitionMetal, 25, 4, 55, 1.19f, 1.39f, 7, 0, 12, 0, 0, 54.938f, 18, 2, 1.55f);

        public static readonly Element Fe = new Element(ElementType.TransitionMetal, 26, 4, 33, 1.95f, 1.25f, 3, 0, 8, 0, 0, 55.847f, 18, 3, 1.83f);

        public static readonly Element Co = new Element(ElementType.TransitionMetal, 27, 4, 23, 1.13f, 1.26f, 3, 0, 12, 0, 0, 58.933f, 18, 2, 1.88f);

        public static readonly Element Ni = new Element(ElementType.TransitionMetal, 28, 4, 62, 1.24f, 1.21f, 3, 0, 12, 0, 0, 58.710f, 18, 2, 1.91f);

        public static readonly Element Cu = new Element(ElementType.TransitionMetal, 29, 4, 26, 1.15f, 1.38f, 2, 0, 4, 0, 0, 63.546f, 18, 2, 1.90f);

        public static readonly Element Zn = new Element(ElementType.TransitionMetal, 30, 4, 106, 1.15f, 1.31f, 2, 0, 2, 0, 0, 65.380f, 18, 2, 1.65f);

        public static readonly Element Ga = new Element(ElementType.PostTransitionMetal, 31, 4, 36, 1.55f, 1.26f, 3, 1, 4, 2, 4, 69.720f, 28, 3, 1.81f);

        public static readonly Element Ge = new Element(ElementType.Metalloid, 32, 4, 38, 2.72f, 1.22f, 4, 0, 12, 4, 4, 72.590f, 28, 4, 2.01f);

        public static readonly Element As = new Element(ElementType.Metalloid, 33, 4, 7, 0.83f, 1.19f, 5, 0, 12, 3, 5, 74.922f, 28, -3, 2.18f);

        public static readonly Element Se = new Element(ElementType.OtherNonmetal, 34, 4, 85, 0.90f, 1.16f, 6, 0, 12, 2, 6, 78.960f, 28, 4, 2.55f);

        public static readonly Element Br = new Element(ElementType.Halogen, 35, 4, 15, 1.95f, 1.14f, 7, 0, 1, 1, 1, 79.904f, 28, -1, 2.96f);

        public static readonly Element Kr = new Element(ElementType.NobleGas, 36, 4, 48, 1.90f, 1.60f, 8, 0, 12, 0, 0, 83.800f, 28, 0, 3.00f);

        public static readonly Element Rb = new Element(ElementType.AlkalineMetal, 37, 5, 77, 2.65f, 2.11f, 1, 0, 12, 0, 0, 85.467f, 36, 1, 0.82f);

        public static readonly Element Sr = new Element(ElementType.AlkalineEarthMetal, 38, 5, 89, 2.02f, 1.92f, 2, 0, 12, 2, 0, 87.620f, 36, 2, 0.95f);

        public static readonly Element Y = new Element(ElementType.TransitionMetal, 39, 5, 103, 1.61f, 1.62f, 3, 0, 12, 3, 0, 88.806f, 36, 3, 1.22f);

        public static readonly Element Zr = new Element(ElementType.TransitionMetal, 40, 5, 105, 1.42f, 1.48f, 4, 0, 12, 4, 0, 91.220f, 36, 4, 1.33f);

        public static readonly Element Nb = new Element(ElementType.TransitionMetal, 41, 5, 59, 1.33f, 1.37f, 5, 0, 12, 3, 0, 92.906f, 36, 5, 1.60f);

        public static readonly Element Mo = new Element(ElementType.TransitionMetal, 42, 5, 56, 1.75f, 1.45f, 6, 1, 6, 3, 0, 95.940f, 36, 6, 2.16f);

        public static readonly Element Tc = new Element(ElementType.TransitionMetal, 43, 5, 93, 1.80f, 1.56f, 7, 0, 12, 6, 0, 98.910f, 36, 7, 1.90f);

        public static readonly Element Ru = new Element(ElementType.TransitionMetal, 44, 5, 81, 1.20f, 1.26f, 8, 0, 12, 3, 0, 101.070f, 36, 4, 2.20f);

        public static readonly Element Rh = new Element(ElementType.TransitionMetal, 45, 5, 79, 1.22f, 1.35f, 4, 0, 12, 3, 0, 102.906f, 36, 3, 2.28f);

        public static readonly Element Pd = new Element(ElementType.TransitionMetal, 46, 5, 70, 1.44f, 1.31f, 4, 0, 12, 2, 0, 106.400f, 36, 2, 2.20f);

        public static readonly Element Ag = new Element(ElementType.TransitionMetal, 47, 5, 3, 1.55f, 1.53f, 1, 0, 6, 0, 0, 107.868f, 36, 1, 1.93f);

        public static readonly Element Cd = new Element(ElementType.TransitionMetal, 48, 5, 18, 1.75f, 1.48f, 2, 0, 12, 0, 0, 112.400f, 36, 2, 1.69f);

        public static readonly Element In = new Element(ElementType.PostTransitionMetal, 49, 5, 45, 1.46f, 1.44f, 3, 0, 12, 3, 0, 114.820f, 46, 3, 1.78f);

        public static readonly Element Sn = new Element(ElementType.PostTransitionMetal, 50, 5, 88, 1.67f, 1.41f, 4, 0, 12, 2, 4, 118.690f, 46, 4, 1.96f);

        public static readonly Element Sb = new Element(ElementType.Metalloid, 51, 5, 83, 1.12f, 1.38f, 5, 0, 12, 4, 5, 121.750f, 46, -3, 2.05f);

        public static readonly Element Te = new Element(ElementType.Metalloid, 52, 5, 94, 1.26f, 1.35f, 6, 0, 12, 2, 6, 127.600f, 46, 4, 2.10f);

        public static readonly Element I = new Element(ElementType.Halogen, 53, 5, 44, 2.15f, 1.33f, 7, 1, 1, 1, 1, 126.905f, 46, -1, 2.66f);

        public static readonly Element Xe = new Element(ElementType.NobleGas, 54, 5, 102, 2.10f, 1.70f, 8, 0, 12, 0, 0, 131.300f, 46, 0, 2.60f);

        public static readonly Element Cs = new Element(ElementType.AlkalineMetal, 55, 6, 25, 3.01f, 2.25f, 1, 0, 12, 0, 0, 132.905f, 54, 1, 0.79f);

        public static readonly Element Ba = new Element(ElementType.AlkalineEarthMetal, 56, 6, 11, 2.41f, 1.98f, 2, 0, 12, 0, 0, 137.340f, 54, 2, 0.89f);

        public static readonly Element La = new Element(ElementType.Lanthanoid, 57, 6, 49, 1.83f, 1.95f, 3, 0, 12, 3, 0, 138.905f, 54, 3, 1.10f);

        public static readonly Element Ce = new Element(ElementType.Lanthanoid, 58, 6, 19, 1.86f, 1.03f, 4, 0, 12, 3, 0, 140.120f, 54, 3, 1.12f);

        public static readonly Element Pr = new Element(ElementType.Lanthanoid, 59, 6, 73, 1.62f, 0.90f, 4, 0, 12, 3, 0, 140.908f, 55, 3, 1.13f);

        public static readonly Element Nd = new Element(ElementType.Lanthanoid, 60, 6, 60, 1.79f, 0.99f, 3, 0, 12, 3, 0, 144.240f, 56, 3, 1.14f);

        public static readonly Element Pm = new Element(ElementType.Lanthanoid, 61, 6, 71, 1.76f, 0.98f, 3, 0, 12, 3, 0, 145.000f, 58, 3, 1.13f);

        public static readonly Element Sm = new Element(ElementType.Lanthanoid, 62, 6, 87, 1.74f, 0.96f, 3, 0, 12, 2, 0, 150.400f, 59, 3, 1.17f);

        public static readonly Element Eu = new Element(ElementType.Lanthanoid, 63, 6, 31, 1.96f, 1.09f, 3, 0, 12, 2, 0, 151.960f, 60, 3, 1.20f);

        public static readonly Element Gd = new Element(ElementType.Lanthanoid, 64, 6, 37, 1.69f, 0.94f, 3, 0, 12, 3, 0, 157.250f, 61, 3, 1.20f);

        public static readonly Element Tb = new Element(ElementType.Lanthanoid, 65, 6, 92, 1.66f, 0.92f, 4, 0, 12, 3, 0, 158.925f, 61, 3, 1.10f);

        public static readonly Element Dy = new Element(ElementType.Lanthanoid, 66, 6, 28, 1.63f, 0.91f, 3, 0, 12, 3, 0, 162.500f, 62, 3, 1.22f);

        public static readonly Element Ho = new Element(ElementType.Lanthanoid, 67, 6, 43, 1.61f, 0.89f, 3, 0, 12, 3, 0, 164.930f, 64, 3, 1.23f);

        public static readonly Element Er = new Element(ElementType.Lanthanoid, 68, 6, 29, 1.59f, 0.88f, 3, 0, 12, 3, 0, 167.260f, 65, 3, 1.24f);

        public static readonly Element Tm = new Element(ElementType.Lanthanoid, 69, 6, 98, 1.57f, 0.87f, 3, 0, 12, 3, 0, 168.934f, 66, 3, 1.25f);

        public static readonly Element Yb = new Element(ElementType.Lanthanoid, 70, 6, 104, 1.54f, 0.86f, 3, 0, 12, 2, 0, 173.040f, 67, 3, 1.10f);

        public static readonly Element Lu = new Element(ElementType.Lanthanoid, 71, 6, 52, 1.53f, 0.85f, 3, 0, 12, 3, 0, 174.970f, 68, 3, 1.27f);

        public static readonly Element Hf = new Element(ElementType.TransitionMetal, 72, 6, 41, 1.40f, 1.58f, 4, 0, 12, 4, 0, 178.490f, 68, 4, 1.30f);

        public static readonly Element Ta = new Element(ElementType.TransitionMetal, 73, 6, 91, 1.22f, 1.38f, 5, 0, 12, 5, 0, 180.850f, 68, 5, 1.50f);

        public static readonly Element W = new Element(ElementType.TransitionMetal, 74, 6, 101, 1.26f, 1.46f, 6, 0, 12, 6, 0, 183.850f, 68, 6, 2.36f);

        public static readonly Element Re = new Element(ElementType.TransitionMetal, 75, 6, 78, 1.30f, 1.59f, 7, 0, 12, 4, 0, 186.200f, 68, 7, 1.90f);

        public static readonly Element Os = new Element(ElementType.TransitionMetal, 76, 6, 66, 1.58f, 1.28f, 8, 0, 12, 2, 0, 190.200f, 68, 4, 2.20f);

        public static readonly Element Ir = new Element(ElementType.TransitionMetal, 77, 6, 46, 1.22f, 1.37f, 6, 0, 12, 3, 0, 192.220f, 68, 4, 2.20f);

        public static readonly Element Pt = new Element(ElementType.TransitionMetal, 78, 6, 74, 1.55f, 1.28f, 4, 0, 6, 0, 0, 195.090f, 68, 4, 2.28f);

        public static readonly Element Au = new Element(ElementType.TransitionMetal, 79, 6, 9, 1.45f, 1.44f, 3, 0, 6, 0, 0, 196.967f, 68, 3, 2.54f);

        public static readonly Element Hg = new Element(ElementType.TransitionMetal, 80, 6, 42, 1.55f, 1.32f, 2, 0, 12, 1, 2, 200.59f, 78, 1, 2.00f);

        public static readonly Element Tl = new Element(ElementType.PostTransitionMetal, 81, 6, 97, 1.96f, 1.45f, 3, 0, 12, 1, 3, 204.3833f, 78, 1, 1.62f);

        public static readonly Element Pb = new Element(ElementType.PostTransitionMetal, 82, 6, 69, 2.16f, 1.47f, 4, 0, 12, 2, 4, 207.200f, 78, 2, 2.33f);

        public static readonly Element Bi = new Element(ElementType.PostTransitionMetal, 83, 6, 13, 1.73f, 1.46f, 5, 0, 12, 3, 3, 208.981f, 78, 3, 2.20f);

        public static readonly Element Po = new Element(ElementType.Metalloid, 84, 6, 72, 1.21f, 0.67f, 6, 0, 12, 4, 2, 209.000f, 78, 4, 2.0f);

        public static readonly Element At = new Element(ElementType.Halogen, 85, 6, 8, 1.12f, 0.62f, 7, 0, 12, 1, 1, 210.000f, 78, -1, 2.20f);

        public static readonly Element Rn = new Element(ElementType.NobleGas, 86, 6, 80, 2.30f, 1.90f, 8, 0, 12, 0, 0, 222.000f, 78, 0, 0.0f);

        public static readonly Element Fr = new Element(ElementType.AlkalineMetal, 87, 7, 35, 3.24f, 1.80f, 1, 0, 12, 0, 0, 223.000f, -1, 1, 0.70f);

        public static readonly Element Ra = new Element(ElementType.AlkalineEarthMetal, 88, 7, 76, 2.57f, 1.43f, 2, 0, 12, 2, 0, 226.000f, -1, 2, 0.9f);

        public static readonly Element Ac = new Element(ElementType.Actinoid, 89, 7, 2, 2.12f, 1.18f, 3, 0, 12, 4, 0, 227.000f, -1, 3, 1.1f);

        public static readonly Element Th = new Element(ElementType.Actinoid, 90, 7, 95, 1.84f, 1.02f, 4, 0, 12, 1, 0, 232.038f, -1, 4, 1.30f);

        public static readonly Element Pa = new Element(ElementType.Actinoid, 91, 7, 68, 1.60f, 0.89f, 5, 0, 12, 4, 0, 231.036f, -1, 5, 1.50f);

        public static readonly Element U = new Element(ElementType.Actinoid, 92, 7, 99, 1.75f, 0.97f, 6, 0, 12, 4, 0, 238.029f, -1, 6, 1.38f);

        public static readonly Element Np = new Element(ElementType.Actinoid, 93, 7, 64, 1.71f, 0.95f, 6, 0, 12, 4, 0, 237.048f, -1, 5, 1.36f);

        public static readonly Element Pu = new Element(ElementType.Actinoid, 94, 7, 75, 1.67f, 0.93f, 6, 0, 12, 3, 0, 244.000f, -1, 4, 1.28f);

        public static readonly Element Am = new Element(ElementType.Actinoid, 95, 7, 5, 1.66f, 0.92f, 6, 0, 12, 3, 0, 243.000f, -1, 3, 1.13f);

        public static readonly Element Cm = new Element(ElementType.Actinoid, 96, 7, 22, 1.65f, 0.91f, 3, 0, 12, 3, 0, 248.000f, -1, 3, 1.28f);

        public static readonly Element Bk = new Element(ElementType.Actinoid, 97, 7, 14, 1.64f, 0.90f, 4, 0, 12, 3, 0, 247.000f, -1, 3, 1.30f);

        public static readonly Element Cf = new Element(ElementType.Actinoid, 98, 7, 20, 1.63f, 0.89f, 3, 0, 12, 4, 0, 251.000f, -1, 3, 1.30f);

        public static readonly Element Es = new Element(ElementType.Actinoid, 99, 7, 30, 1.62f, 0.88f, -1, 0, 12, 4, 0, 254.000f, -1, 3, 1.30f);

        public static readonly Element Fm = new Element(ElementType.Actinoid, 100, 7, 34, 1.61f, 0.87f, -1, 0, 12, 4, 0, 257.000f, -1, 3, 1.30f);

        public static readonly Element Md = new Element(ElementType.Actinoid, 101, 7, 53, 1.60f, 0.86f, -1, 0, 12, 4, 0, 256.000f, -1, 3, 1.30f);

        public static readonly Element No = new Element(ElementType.Actinoid, 102, 7, 63, 1.59f, 0.85f, -1, 0, 12, 4, 0, 254.000f, -1, 3, 1.30f);

        public static readonly Element Lr = new Element(ElementType.Actinoid, 103, 7, 51, 1.58f, 0.84f, -1, 0, 12, 4, 0, 257.000f, -1, 3, 0.00f);

        public static readonly Element R = new Element(ElementType.Unknown, 104, 0, 105, 0.0f, 0.0f, 0, 0, 4, 1, 0, 0.000f, -1, 3, 0.00f);
        #endregion
    }
}